package com.loong.web.gp4j.dao.message;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;

import com.loong.web.gp4j.bean.schema.message.UserMessageSchema;
import com.loong.web.suppert.collection.param.ParamMap;

/**
 * 用户消息数据访问
 *
 * @author 张成轩
 */
@Repository
public class UserMessageDao {

	@Resource
	private SqlSessionTemplate template;

	/**
	 * 添加用户消息
	 * 
	 * @param userMessage 用户消息对象
	 * @return 插入条数
	 */
	public int insert(UserMessageSchema userMessage) {

		return template.insert("insertUserMessage", userMessage);
	}

	/**
	 * 更新用户消息读取时间
	 * 
	 * @param userId 用户id
	 * @param id id
	 * @return 更新条数
	 */
	public int updateReadTime(Integer userId, Integer id) {

		Map<String, Integer> params = new HashMap<String, Integer>();
		params.put("userId", userId);
		params.put("id", id);
		return template.update("updateUserMessageReadTime", params);
	}

	/**
	 * 通过消息id删除用户消息
	 * 
	 * @param messageId 消息id
	 * @return 更新条数
	 */
	public int deleteByMessageId(Integer messageId) {

		return template.delete("deleteUserMessageByMessageId", messageId);
	}

	/**
	 * 通过用户id查询用户消息集
	 * 
	 * @param params 参数
	 * @return 用户消息对象集
	 */
	public List<UserMessageSchema> query(ParamMap params) {

		return template.selectList("queryUserMessage", params);
	}

	/**
	 * 通过用户id查询用户消息集
	 * 
	 * @param userId 用户id
	 * @param read 是否已读
	 * @return 用户消息对象集
	 */
	public Integer getCountByUserIdWithDetail(Integer userId, Boolean read) {

		Map<String, Object> params = new HashMap<String, Object>();
		params.put("userId", userId);
		params.put("read", read);
		return template.selectOne("getUserMessageCountByUserIdWithDetail", params);
	}
}
